<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    /* 
        创建一个函数，第一次调用时打印1，第二次调用打印2，以此类推
        可以利用函数，来隐藏不希望被外部访问到的变量
 
        闭包：
            一个函数可以访问另一个函数作用域中的变量，这种函数称为闭包。
         构成闭包的条件：
            1. 函数嵌套
            2. 内部函数引用了外部函数的变量
            3. 外部函数返回了内部函数
    */
    function a() {
      let num = 0; // 位于函数作用域中
      return () => {
        num++;
        console.log(num);
      };
    }
    let fn = a()
    fn()
    fn()
    fn()
  </script>
</html>
